package com.mwh.yuantu.dao;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mwh.yuantu.dao.mapper.UserInfoMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mwh.yuantu.entity.UserInfoEntity;

/**
 * (UserInfo)表数据库访问层
 *
 * @author maweihong
 * @since 2023-11-01 09:47:33
 */
@Service
public class UserInfoDao extends ServiceImpl<UserInfoMapper , UserInfoEntity> {

    @Autowired
	private UserInfoMapper userInfoMapper;

    /**
     * 查询用户
     * @param loginName 登录名
     * @param passWord 登录密码
     * @return
     */
    public UserInfoEntity selectUser(@Param("loginName") String loginName, @Param("passWord") String passWord){
        return userInfoMapper.selectUser(loginName,passWord);
    }

    /**
     * 查询用户数量
     * @param loginName 注册时填写的账号
     * @param email 注册时填写的邮箱
     * @return
     */
    public int countUser(@Param("loginName") String loginName, @Param("email") String email){
        return userInfoMapper.countUser(loginName,email);
    }

    /**
     * 注册新用户
     * @param userInfo
     */
    public int insert(UserInfoEntity userInfo){
        return userInfoMapper.insert(userInfo);
    }

    /**
     * 根据主键查询用户信息
     * @param id 用户主键
     * @return
     */
    public UserInfoEntity selectUserById(String id){
        return userInfoMapper.selectUserById(id);
    }

    /**
     * 查询所有用户
     * @param param
     * @return
     */
    public List<UserInfoEntity> list(Map<String, Object> param){
        return userInfoMapper.list(param);
    }

    /**
     * 批量更新用户
     * @param param
     */
    public int batchUpdate(Map<String, Object> param){
        return userInfoMapper.batchUpdate(param);
    }

    /**
     * 更新用户信息
     * @param userInfo
     * @return
     */
    public int update(UserInfoEntity userInfo){
        return userInfoMapper.update(userInfo);
    }

    /**
     * 校验邮箱是否已被占用
     * @param email
     * @return
     */
    public int countByEmail(String email){
        return userInfoMapper.countByEmail(email);
    }

    /**
     * 根据邮箱查询用户
     * @param email
     * @return
     */
    public UserInfoEntity selectUserByEmail(String email){
        return userInfoMapper.selectUserByEmail(email);
    }

    /**
     * 根据主键查询用户信息（后台管理专用）
     * @param id 用户id
     * @return
     */
    public UserInfoEntity selectById(String id){
        return userInfoMapper.selectById(id);
    }

}

